home *** CD-ROM | disk | FTP | other *** search
-
- Q: How do I pass a variable to a query?
-
- A: First, you must write a query that uses a variable.
-
- Select Test."FName", Test."Salary Of Employee"
- From Test
- Where Test."Salary of Employee" > :val
-
- Note: If you just write the field name as
- "Salary of Employee" you will get a Capability Not
- Supported error. It must be Test."Salary of Employee".
-
- In this can the variable name is "val", but it can be whatever
- you want (of course). Then, you go to the TQuery's params
- property and set the "val" parameter to whatever the
- appropriate type is. In our example here we will call it an
- integer.
-
- Next, you write the code that sets the parameter's value.
- We will be setting the value from a TEdit box.
-
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- with Query1 do
- begin
- Close;
- ParamByName('val').AsInteger := StrToInt(Edit1.Text);
- Open;
- end;
- end;
-
-
- Note: you may want to place this code in a try..except
- block as a safety precaution.
-
- If you want to use a LIKE in your query, you can do
- it this way:
-
- Note: This next section uses the customer table from
- the \delphi\demos\data directory. It can also be
- referenced by using the DBDEMOS alias.
-
- SQL code within the TQuery.SQL property:
-
- SELECT * FROM CUSTOMER
- WHERE Company LIKE :CompanyName
-
-
- Delphi code:
-
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- with Query1 do
- begin
- Close;
- ParamByName('CompanyName').AsString := Edit1.Text + '%';
- Open;
- end;
- end;
-
- An alternate way of referencing a parameter
- (other then ParamByName) is params[TheParameterNumber].
-
- The way that this line:
-
- ParamByName('CompanyName').AsString := Edit1.Text + '%';
-
- can be alternately written is:
-
- Params[0].AsString := Edit1.Text + '%';
-
-
- The trick to the wildcard is in the concatenating of the
- percentage sign at the end of the parameter.